package com.bytz.modules.cms.util;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

public class PageUtils {

    /**
     * 将Page<T>转为Page<Vo>
     * @param page      Page<T>
     * @param voClass   目标Vo的Class
     * @param <T>       实体类型
     * @param <Vo>      Vo类型
     * @param copyOptions      属性拷贝选项
     * @return          Page<Vo>
     */
    public static <T, Vo> Page<Vo> convertToVoPage(IPage<T> page, Class<Vo> voClass, CopyOptions copyOptions) {
        // 将List<T>转为List<Vo>
        List<Vo> vos = BeanUtil.copyToList(page.getRecords(), voClass, copyOptions);
        // 构建Page<Vo>
        return new Page<Vo>(page.getCurrent(), page.getSize(), page.getTotal()).setRecords(vos);
    }

    /**
     * 将Page<T>转为Page<Vo>
     * @param page      Page<T>
     * @param voClass   目标Vo的Class
     * @param <T>       实体类型
     * @param <Vo>      Vo类型
     * @return          Page<Vo>
     */
    public static <T, Vo> Page<Vo> convertToVoPage(IPage<T> page, Class<Vo> voClass) {
        return convertToVoPage(page, voClass, CopyOptions.create());
    }

}
